/*
 * OcumedHandler.java
 * 
 *  author: Daniel Rudigier
 *    date: 21.05.2008
 * 
 * 
 */

// TODO: exception integration with team d
// TODO: - some exceptions are questionable
package ocumed.applikation.domainhandling;

import java.util.List;
import java.util.Vector;
import ocumed.applikation.exceptions.BenutzerNotFoundException;
import ocumed.applikation.exceptions.NoArztException;
import ocumed.domaene.behandlung.DLeistungscode;
import ocumed.domaene.benutzerverwaltung.DBenutzer;
import ocumed.teams.IArzt;
import ocumed.teams.IBenutzer;
import ocumed.teams.ILeistung;
import ocumed.teams.IMedikament;
import ocumed.teams.IOcumed;
import ocumed.teams.IOrt;
import ocumed.teams.IPatient;
import ocumed.teams.IWarteschlange;

/**
 * catalog
 * legacy integration support with team d 
 * 
 * @author Malcolm Staudacher
 * @author Daniel Rudigier
 *
 */
public class OcumedHandler implements IOcumed {
	/**
	 * override
	 * 
	 * @see ocumed.teams.IOcumed#getiArzt(int)
	 */
	public IArzt getiArzt(int id) throws NoArztException,
			BenutzerNotFoundException {
		return DomainHandler.be.getDArzt(id);
	}


	/**
	 * override
	 *
	 * @see ocumed.teams.IOcumed#getiMedikamente()
	 */
	public List<IMedikament> getiMedikamente() {
		return DomainHandler.me.getDMedikamente();
	}


	/**
	 * override
	 *
	 * @see ocumed.teams.IOcumed#getiOrt(int)
	 */
	public IOrt getiOrt(int id) {
		return DomainHandler.oe.getDOrt(id);
	}


	/**
	 * override
	 *
	 * @see ocumed.teams.IOcumed#getiPatient(int)
	 * @throws NoArztException
	 * @throws BenutzerNotFoundException
	 */
	public IPatient getiPatient(int id) throws NoArztException,
			BenutzerNotFoundException {
		return DomainHandler.pe.getDPatient(id);
	}


	/**
	 * override
	 * @throws BenutzerNotFoundException 
	 * @throws NoArztException 
	 *
	 * @see ocumed.teams.IOcumed#getiPatienten()
	 */
	public List<IPatient> getiPatienten() throws NoArztException,
			BenutzerNotFoundException {
		return DomainHandler.pe.getDPatienten();
	}


	/**
	 * override
	 *
	 * @see ocumed.teams.IOcumed#getAerzte()
	 */
	public List<IArzt> getAerzte() {
		return DomainHandler.be.getDAerzte();
	}


	/**
	 * override
	 *
	 * @see ocumed.teams.IOcumed#getActIBenutzer()
	 */
	public IBenutzer getActIBenutzer() {
		return DomainHandler.actIBenutzer;
	}


	/**
	 * override
	 *
	 * @see ocumed.teams.IOcumed#getiLeistung()
	 */
	public List<ILeistung> getiLeistungs() {
		Vector<DLeistungscode> dls = DomainHandler.pe.getLeistungscodes();
		List<ILeistung> ils = new Vector<ILeistung>();
		
		for (DLeistungscode dl : dls) {
			ils.add(dl);
		}
		
		return ils;		
	}


	/**
	 * override
	 *
	 * @see ocumed.teams.IOcumed#setActIBenutzer(ocumed.teams.IBenutzer)
	 */
	public void setActIBenutzer(IBenutzer user) {
		DomainHandler.actIBenutzer = user;
	}


	/**
	 * Gets the specified medicinal drug.
	 */
	public IMedikament getiMedikament(int id) {
		return DomainHandler.me.getDMedikament(id);
	}

	/**
	 * Gets the specified code.
	 */
	public ILeistung getiLeistung(int id) {
		return DomainHandler.pe.getILeistung(id);
	}


    /**
     * override
     *
     * @see ocumed.teams.IOcumed#update()
     */
    @Override
    public void update() {
        DomainHandler.getInstance().update();
    }

}
